Skip to content

feat(rust,python,typescript): unique agent names with upsert-by-name#79

Merged
chaliy merged 6 commits intomainfrom
claude/unique-agent-names-6wozW
Apr 9, 2026
Merged

feat(rust,python,typescript): unique agent names with upsert-by-name#79
chaliy merged 6 commits intomainfrom
claude/unique-agent-names-6wozW

Conversation

@chaliy
Copy link
Copy Markdown
Contributor

@chaliy chaliy commented Apr 9, 2026

Summary

  • Agent name is now a unique addressable slug ([a-z0-9]+(-[a-z0-9]+)*, max 64 chars), matching the harness naming pattern. New display_name field provides a human-readable UI label (falls back to name).
  • Added validate_agent_name() with shared addressable-name validation logic across all three SDKs, and apply_by_name() / applyByName() for upsert-by-name semantics.
  • Updated OpenAPI spec to latest upstream from everruns/everruns.

Test Plan

  • Tests pass locally (Python 133, TypeScript 123, Rust all pass)
  • Coverage ≥80%
  • Linting passes (just pre-push green)

Checklist

  • Follows SDK API consistency guidelines
  • Updated relevant specs (if applicable)
  • Added/updated tests
  • Updated documentation (if applicable)

chaliy added 6 commits April 9, 2026 01:41
Agent `name` is now the unique addressable slug (e.g. "customer-support"),
matching the harness naming pattern. New `display_name` field provides the
human-readable label for UI (falls back to `name`).

Changes across all three SDKs:
- validate_agent_name() with shared addressable-name validation logic
- display_name field on Agent and CreateAgentRequest
- apply_by_name() / applyByName() for upsert-by-name semantics
- Client-side name validation on create/apply methods
- Updated OpenAPI spec to latest upstream

https://claude.ai/code/session_01NzGMP8Fx97UXhp91bZNsmf
…yle agent names

Agent name is now a unique addressable slug. Update all examples and
cookbooks from display-style names ("Dad Jokes Bot") to slug-style
("dad-jokes-bot").

https://claude.ai/code/session_01NzGMP8Fx97UXhp91bZNsmf
Switch examples and cookbooks from create() to apply_by_name() /
applyByName() for idempotent CI runs. With unique agent names,
repeated create() calls fail on name conflicts.

https://claude.ai/code/session_01NzGMP8Fx97UXhp91bZNsmf
…xamples

Agent delete is an archive — archived agents still hold the unique name.
Sequential CI runs across languages (Rust → Python → TypeScript) would
conflict on shared names like "example-assistant". Suffix with language
tag (-rs, -py, -ts) to avoid name collisions.

Also revert to create() since POST /v1/agents does not support
upsert-by-name yet (server has the method but it's not wired to the
REST endpoint).

https://claude.ai/code/session_01NzGMP8Fx97UXhp91bZNsmf
@chaliy chaliy merged commit 686275c into main Apr 9, 2026
12 checks passed
@chaliy chaliy deleted the claude/unique-agent-names-6wozW branch April 9, 2026 03:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant